﻿// 1979. 找出数组的最大公约数.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <vector>
#include <algorithm>



using namespace std;

/*
https://leetcode.cn/problems/find-greatest-common-divisor-of-array/description/

给你一个整数数组 nums ，返回数组中最大数和最小数的 最大公约数 。

两个数的 最大公约数 是能够被两个数整除的最大正整数。



示例 1：

输入：nums = [2,5,6,9,10]
输出：2
解释：
nums 中最小的数是 2
nums 中最大的数是 10
2 和 10 的最大公约数是 2
示例 2：

输入：nums = [7,5,6,8,3]
输出：1
解释：
nums 中最小的数是 3
nums 中最大的数是 8
3 和 8 的最大公约数是 1
示例 3：

输入：nums = [3,3]
输出：3
解释：
nums 中最小的数是 3
nums 中最大的数是 3
3 和 3 的最大公约数是 3


提示：

2 <= nums.length <= 1000
1 <= nums[i] <= 1000
*/

class Solution {
public:
    int gcd(int a, int b) {
        if (b == 0) return a;
        return gcd(b, a%b);
    }
    int findGCD(vector<int>& nums) {
        int minv = 99999; int maxv = -1;
        for (int i = 0; i < nums.size(); i++) {
            minv = min(minv, nums[i]);
            maxv = max(maxv, nums[i]);
        }

        cout << gcd(minv, maxv) << endl;

        return gcd(minv, maxv);
    }
};



int main()
{
    Solution s;
    //vector<int> v{ 2,5,6,9,10 };
    //vector<int> v{ 7,5,6,8,3 };
    vector<int> v{ 3,3 };
    s.findGCD(v);
}
 